package facade;

import static org.junit.Assert.fail;

import java.util.Date;
import java.util.List;

import org.junit.Test;

import psc.model.base.acesso.Cliente;
import psc.model.base.acesso.Perfil;
import psc.model.base.basicas.Profissao;
import psc.model.base.transacao.Extrato;
import psc.model.dao.DaoFactory;
import psc.model.dao.acesso.DaoPerfil;
import psc.model.dao.basicas.DaoProfissao;
import psc.model.dao.cliente.DaoCliente;
import util.Constantes;
import util.ErroEasyBank;

public class FacadeExtratoTest {

	@Test
	public void testGetExtrato() {
		fail("Not yet implemented");
	}

	@Test
	public void testGetExtratoExtrato() {
		fail("Not yet implemented");
	}

	@Test
	public void testGravarExtrato() {
		Extrato extrato = new Extrato();
		FacadeExtrato facadeExtrato = new FacadeExtrato();

		extrato.setCliente(getClienteTeste());
		extrato.setDataOperacao(new Date());
		extrato.setDescricao("Transferencia");
		
		try {
			facadeExtrato.gravarExtrato(extrato);
		} catch (ErroEasyBank e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private Cliente getClienteTeste() {
		DaoCliente daoCliente = DaoFactory.getClienteDao();
		Cliente cliente = new Cliente();
		cliente.setNome("Teste");
		cliente.setCpf("867.861.452-80");
		cliente.setDataInclusao(new Date());
		cliente.setEmail("teste@easybank.com");
		cliente.setEstadoCivil("SOLTEIRO");
		cliente.setNomeMae("MARIA TESTE");
		cliente.setNomePai("JOSE TESTE");
		cliente.setSexo(Constantes.sexo.Masculino);
		cliente.setLogin("teste");
		cliente.setSenha("teste");
		cliente.setRenda(2500);
		@SuppressWarnings("deprecation")
		Date date = new Date(6, 3, 1991);
		cliente.setDataNascimento(date);
		cliente.setNomeConjuge("RENATA TESTE");
		cliente.setProfissao(getProfissaoTeste());
		cliente.setPerfil(getPerfilTeste());
		List<Cliente> clientes = daoCliente.buscarPorExemplo(cliente);
		if (clientes != null && clientes.size() > 0)
			return clientes.get(0);
		daoCliente.salvar(cliente);
		return cliente;
	}

	private Profissao getProfissaoTeste() {
		DaoProfissao daoProfissao = DaoFactory.getProfissaoDao();
		Profissao profissao = new Profissao();
		profissao.setDescricao("TESTE");
		List<Profissao> perfis = daoProfissao.buscarPorExemplo(profissao);
		if (perfis != null && perfis.size() > 0)
			return perfis.get(0);
		daoProfissao.salvar(profissao);
		return profissao;
	}

	private Perfil getPerfilTeste() {
		DaoPerfil daoPerfil = DaoFactory.getPerfilDao();
		Perfil perfil = new Perfil();
		perfil.setDescricao("TESTE");
		List<Perfil> perfis = daoPerfil.buscarPorExemplo(perfil);
		if (perfis != null && perfis.size() > 0)
			return perfis.get(0);
		daoPerfil.salvar(perfil);
		return perfil;
	}

}
